Use the workarea when placing popups
authorMatthias Clasen <mclasen@redhat.com>
Sun, 18 Dec 2011 19:28:01 +0000 (14:28 -0500)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 18 Dec 2011 19:29:16 +0000 (14:29 -0500)
This uses the new workarea API to avoid placing popups underneath
panels, docks, etc.

16 files changed:
gtk/gtkcombobox.c
gtk/gtkentry.c
gtk/gtkentrycompletion.c
gtk/gtkfilechooserdefault.c
gtk/gtklinkbutton.c
gtk/gtkmenu.c
gtk/gtkmenuitem.c
gtk/gtkmenutoolbutton.c
gtk/gtkrecentchooserdefault.c
gtk/gtkscalebutton.c
gtk/gtkstatusicon.c
gtk/gtktextview.c
gtk/gtktoolbar.c
gtk/gtktooltip.c
gtk/gtktreeview.c
gtk/gtkwindow.c

index 3f2b2636dd635c1e9116006c54499b00ca5e3a2e..61be1f1708852e0e153176f60fde174ec33ebaea 100644 (file)
@@ -1890,7 +1890,7 @@ gtk_combo_box_menu_position_below (GtkMenu  *menu,
   screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
   monitor_num = gdk_screen_get_monitor_at_window (screen,
                                                   gtk_widget_get_window (GTK_WIDGET (combo_box)));
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   if (*x < monitor.x)
     *x = monitor.x;
@@ -2089,7 +2089,7 @@ gtk_combo_box_list_position (GtkComboBox *combo_box,
 
   screen = gtk_widget_get_screen (GTK_WIDGET (combo_box));
   monitor_num = gdk_screen_get_monitor_at_window (screen, window);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   if (gtk_widget_get_direction (GTK_WIDGET (combo_box)) == GTK_TEXT_DIR_RTL)
     *x = *x + allocation.width - *width;
index c2377de8005428b4baeb8c902ac500382587e950..ef23f3e08fca99be814f2008503b7fd7a3dad104 100644 (file)
@@ -8604,7 +8604,7 @@ popup_position_func (GtkMenu   *menu,
     monitor_num = 0;
   gtk_menu_set_monitor (menu, monitor_num);
 
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
   gtk_widget_get_preferred_size (priv->popup_menu,
                                  &menu_req, NULL);
   height = gdk_window_get_height (priv->text_area);
index b7e9b6b3e48adefb07c39aab2cb85e9f47e562bd..12c0fe42feeb5c8ff5f3f9dbbd4480cf407c5330 100644 (file)
@@ -1512,9 +1512,7 @@ _gtk_entry_completion_resize_popup (GtkEntryCompletion *completion)
 
   screen = gtk_widget_get_screen (GTK_WIDGET (completion->priv->entry));
   monitor_num = gdk_screen_get_monitor_at_window (screen, window);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
-
-
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   if (y > monitor.height / 2)
     items = MIN (matches, (((monitor.y + y) - (actions * action_height)) / height) - 1);
index 3236a7cc9c2b11e8ace464a1e4487c1f6c8676bb..280e49102cd44b690d9a0e2f761023ad5c7df3a7 100644 (file)
@@ -4250,7 +4250,7 @@ popup_position_func (GtkMenu   *menu,
 
   monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
   gtk_menu_set_monitor (menu, monitor_num);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   *x = CLAMP (*x, monitor.x, monitor.x + MAX (0, monitor.width - req.width));
   *y = CLAMP (*y, monitor.y, monitor.y + MAX (0, monitor.height - req.height));
index f17be71473af283c9242014628ebf08eb887ed39..60ca435232488cbb8da8a0e5dc88d39d4934b795 100644 (file)
@@ -446,7 +446,7 @@ popup_position_func (GtkMenu  *menu,
 
   monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
   gtk_menu_set_monitor (menu, monitor_num);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   *x = CLAMP (*x, monitor.x, monitor.x + MAX (0, monitor.width - req.width));
   *y = CLAMP (*y, monitor.y, monitor.y + MAX (0, monitor.height - req.height));
index ecb4038de46daf4208793addeab71fcbe79dab06..e1fc40adf1ab71132967bc1720a6ab9cb0d9662b 100644 (file)
@@ -3328,7 +3328,7 @@ gtk_menu_get_preferred_height_for_width (GtkWidget *widget,
       GdkScreen *screen = gtk_widget_get_screen (priv->toplevel);
       GdkRectangle monitor;
 
-      gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor);
+      gdk_screen_get_monitor_workarea (screen, priv->monitor_num, &monitor);
 
       if (priv->position_y + min_height > monitor.y + monitor.height)
         min_height = monitor.y + monitor.height - priv->position_y;
@@ -4700,7 +4700,7 @@ gtk_menu_position (GtkMenu  *menu,
       if (priv->monitor_num < 0)
         priv->monitor_num = gdk_screen_get_monitor_at_point (screen, x, y);
 
-      gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor);
+      gdk_screen_get_monitor_workarea (screen, priv->monitor_num, &monitor);
     }
   else
     {
@@ -4730,7 +4730,7 @@ gtk_menu_position (GtkMenu  *menu,
        * Positioning in the vertical direction is similar: first try below
        * mouse cursor, then above.
        */
-      gdk_screen_get_monitor_geometry (screen, priv->monitor_num, &monitor);
+      gdk_screen_get_monitor_workarea (screen, priv->monitor_num, &monitor);
 
       space_left = x - monitor.x;
       space_right = monitor.x + monitor.width - x - 1;
index 727c7d624afae723699265ed800691d16475862a..cb4ee7a6f01c6f6461af18770711c43f1545c0c0 100644 (file)
@@ -2078,7 +2078,7 @@ gtk_menu_item_position_menu (GtkMenu  *menu,
   monitor_num = gdk_screen_get_monitor_at_window (screen, priv->event_window);
   if (monitor_num < 0)
     monitor_num = 0;
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   if (!gdk_window_get_origin (gtk_widget_get_window (widget), &tx, &ty))
     {
index 59518036b1b2f1b1803c495a5474d813cfe05237..afcd69adfed048e32c6addf4f4917889090f0b8b 100644 (file)
@@ -327,7 +327,7 @@ menu_position_func (GtkMenu           *menu,
   monitor_num = gdk_screen_get_monitor_at_window (screen, window);
   if (monitor_num < 0)
     monitor_num = 0;
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   if (orientation == GTK_ORIENTATION_HORIZONTAL)
     {
index 160b37f0a44802f514278d7c9d9ea77182b92af6..b524a906a112e1618f50285de9fe3a3627dd70e2 100644 (file)
@@ -960,7 +960,7 @@ set_default_size (GtkRecentChooserDefault *impl)
   monitor_num = gdk_screen_get_monitor_at_window (screen,
                                                   gtk_widget_get_window (widget));
 
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   width = MIN (width, monitor.width * 3 / 4);
   height = MIN (height, monitor.height * 3 / 4);
@@ -1858,7 +1858,7 @@ popup_position_func (GtkMenu   *menu,
 
   monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
   gtk_menu_set_monitor (menu, monitor_num);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   *x = CLAMP (*x, monitor.x, monitor.x + MAX (0, monitor.width - req.width));
   *y = CLAMP (*y, monitor.y, monitor.y + MAX (0, monitor.height - req.height));
index b6c10f4294031f225ba57d2bb436cbcc8b249830..54765e66f8349effae3c3cb78055d0f0da05beca 100644 (file)
@@ -985,7 +985,7 @@ gtk_scale_popup (GtkWidget *widget,
       monitor = gdk_screen_get_monitor_at_point (screen,
                                                 button_event->x_root,
                                                 button_event->y_root);
-      gdk_screen_get_monitor_geometry (screen, monitor, &rect);
+      gdk_screen_get_monitor_workarea (screen, monitor, &rect);
 
       if (priv->orientation == GTK_ORIENTATION_VERTICAL)
         y += button_event->y;
index bb0abe330309ca07e53f515607b88ab7db179960..180936eac44ff5b99fb141e7e70ce91db6f6d55b 100644 (file)
@@ -2218,7 +2218,7 @@ gtk_status_icon_position_menu (GtkMenu  *menu,
     monitor_num = 0;
   gtk_menu_set_monitor (menu, monitor_num);
 
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   gdk_window_get_origin (window, x, y);
 
index 0c122582c061ed5f3a688687119f7168fae8273c..a048bc9c4d8a2ed12c4d0621ffd51151dada03b2 100644 (file)
@@ -8144,7 +8144,7 @@ popup_position_func (GtkMenu   *menu,
 
   monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
   gtk_menu_set_monitor (menu, monitor_num);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   *x = CLAMP (*x, monitor.x, monitor.x + MAX (0, monitor.width - req.width));
   *y = CLAMP (*y, monitor.y, monitor.y + MAX (0, monitor.height - req.height));
index 5e7cfe1168e3f163fb49f8b7cc08e9095fe7a861..981c1f0e778b85dad38ccc58d7c57d3bfec0f2ed 100644 (file)
@@ -2659,7 +2659,7 @@ menu_position_func (GtkMenu  *menu,
                                                   gtk_widget_get_window (priv->arrow_button));
   if (monitor_num < 0)
     monitor_num = 0;
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   gtk_widget_get_allocation (priv->arrow_button, &allocation);
 
index df4fc50ff163e5bf284dd0191eb0d65f5d811999..ab583925eab8f44c66b5d734b8d5ce6c120d20aa 100644 (file)
@@ -1077,7 +1077,7 @@ gtk_tooltip_position (GtkTooltip *tooltip,
   monitor_num = gdk_screen_get_monitor_at_point (screen,
                                                  tooltip->last_x,
                                                  tooltip->last_y);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   get_bounding_box (new_tooltip_widget, &bounds);
 
index 1398ddbe9d4680bc71fbdd478833e59e399ca21f..e545519ce062454c6021c19024cd1fba8fcf39a4 100644 (file)
@@ -15064,7 +15064,7 @@ gtk_tree_view_search_position_func (GtkTreeView *tree_view,
   GdkRectangle monitor;
 
   monitor_num = gdk_screen_get_monitor_at_window (screen, tree_window);
-  gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
+  gdk_screen_get_monitor_workarea (screen, monitor_num, &monitor);
 
   gtk_widget_realize (search_dialog);
 
index a07da04c40e0fba19fa3faea2d443af86920dbe6..a64d0f33afb64bb16292a1e53e9b4f8c3fae9a1f 100644 (file)
@@ -6612,13 +6612,13 @@ center_window_on_monitor (GtkWindow *window,
   int monitor_num;
 
   monitor_num = get_monitor_containing_pointer (window);
-  
+
   if (monitor_num == -1)
     monitor_num = get_center_monitor_of_window (window);
 
-  gdk_screen_get_monitor_geometry (gtk_window_check_screen (window),
-                                  monitor_num, &monitor);
-  
+  gdk_screen_get_monitor_workarea (gtk_window_check_screen (window),
+                                    monitor_num, &monitor);
+
   *x = (monitor.width - w) / 2 + monitor.x;
   *y = (monitor.height - h) / 2 + monitor.y;